---击飞1  逻辑又客户端完成  这里预留一个id
---@class BuffEffect1:BaseBuffEffect
BuffEffect1 = ClientFight.CreateClass("BuffEffect1",ClientFight.BaseBuffEffect)
local t = BuffEffect1
---@param fight Fight
---@param buff FighterBuff
function t:action(fight, buff, ...)
    local parameters = {...}
    if (buff.target:isDie()) then
        return IBuffEffect.SUCCESS_ATTRI_HAS_CHANGE;
    end
    local value = 0;
    if buff.buffBean.f_BuffEffectValue ~= "" and buff.buffBean.f_BuffEffectValue ~= nil then
        value = buff.buffBean.f_BuffEffectValue[1];
    end
    local back = Utils.toRatio(value)
    local needFrame = buff.continuedTime / Global.FIGHT_FRAME--//需求飞多少帧
    local finishFreme = fight.frame + needFrame - 1--//让前端少飞一帧

    local leftOrRight = FighterUtils.leftOrRight1(buff.source, buff.target);
    -- 被击者后退
    local x = buff.target.position.x + leftOrRight * back;
    local high = Utils.toRatio(buff.buffBean.f_BuffEffectValue[2]);
    FighterManager.changePosition(fight, buff.target, 0, x, buff.target.position.y, 0, false, true,true);
    local actionCommand = ReportManager.changePointOnBeFly(fight, buff.target, MoveType.byFly,nil, finishFreme, high);
    table.insert(fight.actions,actionCommand)
    FightManager.playActions(actionCommand);


    SkillRoleMgr.savePathFile("[" .. fight.frame .. "][EFFECT]Fighter " .. buff.target.fighterId .. " Buff"
    .. buff.modelId .. " 击飞到 " .. getJsonStr(buff.target.position) .. " 击飞距离: " .. back .. " 击飞帧数: " .. needFrame);

    return ClientFight.BaseBuffEffect.action(self,fight, buff, parameters);
end
t.New()